<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class c_usuario extends CI_Controller {
    private $sessao = "";

    function __construct(){
        parent::__construct();
        $this->load->model("ClienteModel");
        $this->load->model("UsuarioModel");
        $this->load->model("Log");
        $this->load->helper("auth");
        $this->sessao = cj_logado();
       
    }

    public function index( $mensagem = "")
    {
        $usuarios = $this->UsuarioModel->getUsuarioCliente($this->sessao->idCliente);

        if( $usuarios->num_rows() > 1 ) :
            $lista = "";
            $linha = 0;
            foreach( $usuarios->result() as $usuario ) :
                if($usuario->email != $this->sessao->email) :
                    if ($linha == 0)
                        $lista .= "<tr class=\"impar\">\n\t\t";
                    else
                        $lista .= "<tr>\n\t\t";
                    $lista .= "<tr>\n\t\t";
                    $lista .= "<td><input type=\"checkbox\" name=\"usuario_$usuario->idUsuario\" /></td>\n\t\t";
                    $lista .= "<td>". anchor("cliente/c_usuario/editar/".$usuario->idUsuario, $usuario->nome." ".$usuario->sobrenome)."</td>\n\t\t";
                    $lista .= "<td>$usuario->email</td>\n\t";
                    if ($usuario->ativo) $lista .= "<td>Sim</td>\n\t";
                    else                 $lista .= "<td>Não</td>\n\t";
                    $lista .= "</tr>\n\t";

                    if ($linha == 0 ) $linha = 1;
                    else $linha = 0;
                endif;
            endforeach;

        else :
            $lista = "<tr>\n\t";
            $lista .= "<td colspan=\"4\">Nenhum usuario cadastrado.</td>\n";
            $lista .= "</tr>\n";
        endif;
       
        if($mensagem != "") $mensagem = "\nOperação realizada com Sucesso!\n";
        $dados = array(
            "titulo" => "Gerenciamento de Usuarios",
            "user" => $this->sessao->nome,
            "lista" => $lista,
            "mensagem" => $mensagem
            );

        $main = array(
            "dados" => $dados,
            "link" => "cliente/c_listar_usuario_view",
            );

        $this->Log->inserir(tipo_usuario(), id_tipo_usuario(),"listou", "usuario");
        $this->load->view("template", $main);
    }

    public function cadastrar(){
        $this->load->helper("form");
        $this->load->library("form_validation");
      
        $dados = array(
            "titulo" => "Cadastro de Usuarios",
            "user" => $this->sessao->nome,
            );

        $main = array(
            "dados" => $dados,
            "link" => "cliente/c_cad_usuario_view"
            );

        //Validação dos campos
        $this->form_validation->set_rules('nome', 'Nome', 'required|min_length[4]');
        $this->form_validation->set_rules('sobrenome', 'Sobrenome', 'required|min_length[4]');;
        $this->form_validation->set_rules('email', 'E-mail', 'required|valid_email|callback_email_check');
        $this->form_validation->set_rules('senha', 'Senha', 'required|md5');
        $this->form_validation->set_rules('senha2', 'Confirmar senha', 'required|matches[senha]');

        if ($this->form_validation->run() == false) :
            $this->load->view('template', $main);

        else :
            $campos = array(
                "idCliente" => $this->sessao->idCliente,
                "nome" => $this->input->post("nome"),
                "sobrenome" => $this->input->post("sobrenome"),
                "email" => $this->input->post("email"),
                "senha" => $this->input->post("senha"),
                "ativo" => $this->input->post("ativo"),
                "dataCadastro" => timestamp()
            );
            $idInserido = $this->UsuarioModel->inserir($campos);

            $this->Log->inserir(tipo_usuario(), id_tipo_usuario(), "cadastrou", "usuario", $idInserido);
            redirect("cliente/c_usuario/index/sucesso");
        endif;

    }

    public function editar($idUsuario = ""){

        if ($idUsuario == "") redirect("erro/index");
        $this->load->helper("form");
        $this->load->library("form_validation");

        $usuario = $this->UsuarioModel->getUsuario($idUsuario);
        if($usuario->email == $this->sessao->email) redirect("cliente/c_cliente/editar/$this->sessao->idCliente");

        $dados = array(
            "titulo" => "Edição de Usuarios",
            "user" => $this->sessao->nome,
            "usuario" => $usuario
            );

        $main = array(
            "dados" => $dados,
            "link" => "cliente/c_edit_usuario_view"
            );

        //Validação dos campos
        $this->form_validation->set_rules('nome', 'Nome', 'required|min_length[4]');
        $this->form_validation->set_rules('sobrenome', 'Sobrenome', 'required|min_length[4]');;
        $this->form_validation->set_rules('email', 'E-mail', 'required|valid_email');
        $this->form_validation->set_rules('senha', 'Senha', 'md5');
        $this->form_validation->set_rules('senha2', 'Confirmar senha', 'matches[senha]');

        if ($this->form_validation->run() == false) :
            $this->load->view('template', $main);

        else :
            $campos = array(
                "nome" => $this->input->post("nome"),
                "sobrenome" => $this->input->post("sobrenome"),
                "email" => $this->input->post("email"),
                "senha" => $this->input->post("senha"),
                "ativo" => $this->input->post("ativo")
            );
            $this->UsuarioModel->update($idUsuario,$campos);
         
            redirect("cliente/c_usuario/index/sucesso");
        endif;
    }

    public function gerenciar(){
        //print_r($this->input->post());
        if($this->input->post("deletar_x")) :
                $this->delete();
        elseif($this->input->post("autorizar_x")) :
                $this->autorizar();
        elseif($this->input->post("desautorizar_x")) :
                $this->desautorizar();
        else :
            show_404();
        endif;
    }

    private function delete(){

        foreach($this->input->post() as $campo => $valor) :
            $nome = explode("_", $campo);
            //Se a primeira parte do nome do campo é usuario
            if($nome[0] == "usuario") :
                $this->UsuarioModel->delete( $nome[1] );
                $this->Log->inserir(tipo_usuario(), id_tipo_usuario(), "deletou", "usuario", $nome[1]);
                $nome = "";
            endif;
        endforeach;
        redirect("cliente/c_usuario/index/sucesso");
    }

    private function autorizar(){
        //print_r($this->input->post());
        foreach($this->input->post() as $campo => $valor) :
            $nome = explode("_", $campo);
            //Se a primeira parte do nome do campo é produto
            if($nome[0] == "usuario") :
                $vetor = array( "ativo" => 1);
                $this->UsuarioModel->update($nome[1],$vetor );
                $this->Log->inserir(tipo_usuario(), id_tipo_usuario(), "autorizou", "usuario", $nome[1]);
                $nome = "";
            endif;
        endforeach;
        redirect("cliente/c_usuario/index/sucesso");
    }

    private function desautorizar(){
        //print_r($this->input->post());
        foreach($this->input->post() as $campo => $valor) :
            $nome = explode("_", $campo);
            //Se a primeira parte do nome do campo é produto
            if($nome[0] == "usuario") :
                $vetor = array( "ativo" => 0);
                $this->UsuarioModel->update($nome[1],$vetor );
                $this->Log->inserir(tipo_usuario(), id_tipo_usuario(),"desautorizou", "usuario", $nome[1]);
                $nome = "";
            endif;
        endforeach;
        redirect("cliente/c_usuario/index/sucesso");
    }


    function email_check($str){
        if ($this->UsuarioModel->getUsuarioEmail($str) != false) :
            $this->form_validation->set_message('email_check', 'Já há um cadastro com este e-mail.');
            return FALSE;

        else :
            return TRUE;
        endif;
    }

}